package com.ruoyi.common.utils.security;

import java.io.UnsupportedEncodingException;

public class GetEncode {
    public static String transcode(String str, String sourceCharset, String targetCharset){
        if (str  ==  null)
            return  null;
        String  retStr  =  str;
        byte b[];
        try{
            b = str.getBytes(sourceCharset);
            for(int i=0; i < b.length; i++){
                byte  b1  =  b[i];
                if(b1 == 63)
                    break;
                else if(b1 > 0)
                    continue;
                else if(b1 < 0){
                    retStr = new String(b, targetCharset);
                    break;
                }
            }

            b = retStr.getBytes();
        }catch(UnsupportedEncodingException e){
            e.printStackTrace();
        }
        return  retStr;
    }

    /**
     * 将字符串先按ISO8859-1解码，再按UTF-8编码
     * @param str
     * @return
     */
    public static String transcode(String str){
        if(str == null || "".equals(str.trim()))
            return "";
        return transcode(str,"ISO8859-1", "UTF-8");
    }

    /*
     * unicode编码转中文
     */
    public static String unicodeToCn(String unicode) {
        /** 以 \ u 分割，因为java注释也能识别unicode，因此中间加了一个空格*/
        String[] strs = unicode.split("\\\\u");
        String returnStr = "";
        // 由于unicode字符串以 \ u 开头，因此分割出的第一个字符是""。
        for (int i = 1; i < strs.length; i++) {
            returnStr += (char) Integer.valueOf(strs[i], 16).intValue();
        }
        return returnStr;
    }
}
